package main

import "fmt"

func main() {
	// fmt.Print("沙河")
	// fmt.Print("娜扎") //不换行

	// fmt.Println("----")
	// fmt.Println("沙河")
	// fmt.Println("娜扎") //换行

	// fmt.Printf("格式化字符串", 值)
	// %T :查看类型
	// %d :十进制数
	// %b :二进制数 无小数部分
	// %o :八进制数
	// %x :十六进制数
	// %x :十六进制,使用a-f
	// %X :十六进制,使用A-F
	// %c :字符 该值对应的Unicode码值
	// %U :表示为Unicode格式: U+1234,等价与"U+%0X"
	// %q :该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示
	// %s :字符串
	// %p :指针
	// %v :值
	// %f :浮点数 有小数部分但无指数部分
	// %F :等价于%f
	// %g :根据实际情况采用%e或者%f格式(以获得更简洁 准确的输出)
	// %G :根据实际情况采用%E或者%F格式(以获得更简洁 准确的输出)
	// %t :布尔值
	// %e %E :科学计数法
	// 字符串和[]byte
	// %s %q(双引号) %x %X
	// 宽度标识符
	// %f -> %9f  总共9位 ; %9.2f -> 总共9位,小数点后保留两位 不够补0  ; 值不够9位 前面补空行 %.2f  ...

	// 格式化占位符
	// var m1 = make(map[string]int, 1)
	// m1["理想"] = 100
	// fmt.Printf("%v\n", m1)
	// fmt.Printf("%#v\n", m1) // Go语法表示
	printBaifenbi(90)
	// fmt.Printf("%s\n", 100) // 不是一个字符串
	// fmt.Printf("%v\n", 100) // 值的默认格式表示

	// 整数->字符
	// fmt.Printf("%q\n", 65)

	// 浮点数和科学计数法
	// fmt.Printf("%b\n", 3.141592654)

	// fmt.Printf("%s\n", "理想有理想")
	// fmt.Printf("%5.2s\n", "理想有理想")
	// fmt.Printf("%2.3s\n", "理想有理想")
	// 👆  长度  截取多少个

	// 获取用户输入
	// var s string
	// fmt.Scan(&s)
	// fmt.Println("用户输入的内容是:", s)
	// Scan从标准输入扫描文本,读取由空白符分割的值保存到传递给本函数的参数中,换行符视为空白符.
	// 本函数返回成功扫描的数据个数和遇到的任何错误.如果读取的数据个数比提供的参数少,会返回一个错误报告原因.
	// var (
	// 	name  string
	// 	age   int
	// 	class string
	// )
	// fmt.Scanf("%s %d %s\n", &name, &age, &class)
	// fmt.Println(name, age, class)

	// 扫描到用户换行结束
	// fmt.Scanln(&name, &age, &class)
	// fmt.Println(name, age, class)

	// Sprint 系类函数会把传入的数据生成并返回一个字符串

	// Error 返回一个错误
}

func printBaifenbi(num int) {
	fmt.Printf("%d%%\n", num) // %% 百分号显示
}
